﻿using System;
using GC_VKMD.MusicDownloaderClient.Abstractions.Interfaces;
using GC_VKMD.MusicDownloaderClient.ViewModels.Parameters;

namespace GC_VKMD.MusicDownloaderClient.Abstractions.Factories
{
	public abstract class WindowAdapterBaseFactory
	{
		#region Properties

		protected WindowBaseFactory WindowFactory { get; private set; }
		protected WindowViewModelBaseFactories WindowViewModelFactories { get; set; }

		#endregion

		#region Constructors

		protected WindowAdapterBaseFactory(WindowBaseFactory windowFactory, WindowViewModelBaseFactories windowViewModelFactories)
		{
			if (windowFactory == null)
				throw new ArgumentNullException(string.Format("windowFactory"));
			WindowFactory = windowFactory;

			if (windowViewModelFactories == null)
				throw new ArgumentNullException(string.Format("windowViewModelFactories"));
			WindowViewModelFactories = windowViewModelFactories;
		}

		#endregion

		#region Abstract Methods

		public abstract IWindow CreateMusicDownloaderWindowAdapter(MusicDownloaderSettingsViewModelParameters parameters);

		public abstract IWindow CreateVKAutorizationWindowAdapter(MusicDownloaderViewModelParameters parameters);

		#endregion
	}
}
